#include <stdio.h>
#include <string.h>
// 使用指针遍历字符串 reverse(char *str)，在反转过程中可以使用双指针法来交换字符串的字符

void reverse(char *str)
{
  char *left = str;
  char *right = str + strlen(str) - 1;
  while (left < right)
  {
    char temp = *left;
    *left = *right;
    *right = temp;
    left++;
    right--;
  }
}
int main()
{
  char str[100];
  char str1[] = "Hello, World!";
  char str2[] = "Hello";
  char str3[] = {'H', 'e', 'l', 'l', 'o'};
  printf("Size of str2: %zu\n", sizeof(str2));   // 输出 6
  printf("Length of str2: %zu\n", strlen(str2)); // 输出 5
  printf("Size of str3: %zu\n", sizeof(str3));   // 输出 5
  printf("Enter a string: ");
  // 字符串字面值 "Hello, World!" 在内存中存储时，编译器会自动在末尾添加一个空字符 \0 作为字符串的结束标记。
  // 因此，这个字符串实际上包含 14 个字符：13 个可见字符 + 1 个空字符。
  // 使用 strlen() 函数获取的是字符串的有效长度（不包括 \0）
  printf("Size of str1: %zu\n", sizeof(str1));   // 输出 14
  printf("Length of str1: %zu\n", strlen(str1)); // 输出 13
  scanf("%s", str);
  reverse(str);
  printf("%d:\n", sizeof(str));
  printf("Reversed string: %s\n", str);
  return 0;
}